This document relates to the sharing of metadata. More particularly, this document describes systems and methods for metadata integration in a heterogeneous software system landscape.
Metadata, the exchange of metadata and its programmatic access through APIs plays a central role in almost any software product. Metadata defines the structure and meaning of data objects and is used by applications to define, relate and manipulate objects. In order to make software products more interoperable, a general trend in industry is to base the access, exchange, and structure of metadata on common standards, i.e. common access application programming interfaces (APIs), common interchange formats and common metamodels.
The Java Metadata Interface (JMI) provides a common access API for metadata on a Java platform. JMI is based on the OMG's Meta Object Facility (MOF) and defines patterns that translate any MOF-based metamodel into a corresponding set of Java interfaces and thus a common programming model for accessing metadata. JMI defines a JMI Service as any system that provides a JMI-compliant API to its public metadata. The Java rendering of a Java API can be easily automated using the JMI patterns as it is completely generic and applicable to any metamodel that adheres to the MOF standard. However the JMI specification itself does not provide any patterns for implementing a JMI-compliant service.
Only a small percentage of available metadata is typically used by an application, however. As one consequence, not all associations of metadata to other metadata are needed at once. Prior solutions have employed techniques that first instantiate a complete set of JMI metadata objects from the underlying metadata resource, and then exchange this metadata using an XML metadata interchange (XMI)-formatted XML file. However, these techniques required that a large amount of metadata be extracted all at once for transport and manipulation.